// components/common/roulette.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    items: {
      type: Array,
      value: []
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    rotateAngle: 0,
    spinning: false,
    showResult: false,
    result: null
  },

  /**
   * 组件的方法列表
   */
  methods: {
    startSpin() {
      if (this.data.spinning || this.data.items.length === 0) return;
      
      this.setData({
        spinning: true,
        showResult: false
      });
      
      // 随机选择一个结果
      const itemCount = this.data.items.length;
      const randomIndex = Math.floor(Math.random() * itemCount);
      const selectedItem = this.data.items[randomIndex];
      
      // 计算旋转角度
      // 旋转的基础角度（多转几圈）+ 指向选中项的角度
      const baseAngle = 360 * 5; // 旋转5圈
      const itemAngle = 360 / itemCount;
      const targetAngle = baseAngle + (itemAngle * randomIndex);
      
      // 设置旋转角度
      this.setData({
        rotateAngle: targetAngle
      });
      
      // 旋转结束后显示结果
      setTimeout(() => {
        this.setData({
          spinning: false,
          showResult: true,
          result: selectedItem
        });
      }, 4000); // 与CSS中的transition时间一致
    },
    
    acceptResult() {
      const result = this.data.result;
      
      // 添加到购物车
      const app = getApp();
      const cart = app.globalData.cart || [];
      
      // 检查菜品是否已在购物车中
      const existingItem = cart.find(item => item.id === result.id);
      
      if (existingItem) {
        // 如果已存在，增加数量
        existingItem.quantity += 1;
      } else {
        // 如果不存在，添加到购物车
        cart.push({
          ...result,
          quantity: 1
        });
      }
      
      // 更新全局数据
      app.globalData.cart = cart;
      
      // 更新本地存储
      wx.setStorageSync('cart', cart);
      
      // 关闭结果弹窗
      this.setData({
        showResult: false
      });
      
      // 显示添加成功提示
      wx.showToast({
        title: '已添加到购物车',
        icon: 'success',
        duration: 1500
      });
      
      // 触发自定义事件
      this.triggerEvent('accept', { dish: result });
    },
    
    rejectResult() {
      // 关闭结果弹窗
      this.setData({
        showResult: false
      });
      
      // 重新开始旋转
      this.startSpin();
    }
  }
}) 